/*
 * ------------------------------------------------------------------
 * 封装crypto-js 模块
 * ------------------------------------------------------------------
 * @关于我：
 * QQ:2815473064
 * wechat:13531609457
 * ------------------------------------------------------------------
 */

import Crypto from "crypto-js";
const crpytoConfig = {
  AES_KEY: "qwdkshjf9834jsdf", // 秘钥
  AES_IV: "dkfjdfgc987cs6sk", // 偏移量
  AES_MODE: Crypto.mode.CBC, // 加密模式
  AES_PADDING: Crypto.pad.Pkcs7,
};
/**
 * 将文本加密
 * 将文本进行本系统特定加密方式进行加密,返回加密后的直接文本
 * @param  { String } value  需要加密的文本
 * @return { String } value 加密后的文本
 * @example encrypt("需要加密的文本")
 * @module ["crypto-js"]
 **/
export function encrypt(value) {
  const { AES_IV, AES_KEY, AES_MODE, AES_PADDING } = crpytoConfig;
  const key = Crypto.enc.Utf8.parse(AES_KEY);
  const iv = Crypto.enc.Utf8.parse(AES_IV);
  let value_parse_utf8 = Crypto.enc.Utf8.parse(value);
  let toValue = Crypto.AES.encrypt(value_parse_utf8, key, {
    iv,
    mode: AES_MODE,
    padding: AES_PADDING,
  });
  return toValue.toString();
}
/**
 * 将文本解密
 * 将文本进行本系统特定解密方式进行解密,返回解密后的直接文本
 * @param  { String } value  需要加密的文本
 * @return { String } value 加密后的文本
 * @example decrypt("需要解密的文本")
 * @module ["crypto-js"]
 * **/
export const decrypt = (value) => {
  const { AES_IV, AES_KEY, AES_MODE, AES_PADDING } = crpytoConfig;
  const key = Crypto.enc.Utf8.parse(AES_KEY);
  const iv = Crypto.enc.Utf8.parse(AES_IV);
  let decrypt = Crypto.AES.decrypt(value, key, {
    iv,
    mode: AES_MODE,
    padding: AES_PADDING,
  });
  return decrypt.toString(Crypto.enc.Utf8);
};
export default {
  encrypt,
  decrypt,
};
